package com.heima.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.heima.common.Result;
import com.heima.pojo.entity.SkuClass;
import com.heima.pojo.dto.SkuSearchDto;
import com.heima.pojo.dto.SkufyDto;
import com.heima.service.SkuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 *商品类型管理
 */
@RestController
@RequestMapping("/api/vm-service/skuClass")
@Slf4j
@Api("新增商品类型")

public class Skucontroller {
    @Autowired
    private SkuService skuService;

    /**
     * 新增商品类型
     * @param skuClass
     * @return
     */
    @PostMapping
    @ApiOperation("新增商品类型")
    public Result skuClass(@RequestBody SkuClass skuClass){
         // 判断如果新增的同一个名称就报错误
         if (skuClass.getClassName() == null || skuClass.getClassName().trim().isEmpty()) {
             return Result.error("商品类型名称不能为空");
         }
         
         // 检查是否已存在同名的商品类型
         SkuClass existingClass = skuService.getOne(new LambdaQueryWrapper<SkuClass>()
                 .eq(SkuClass::getClassName, skuClass.getClassName()));
         if (existingClass != null) {
             return Result.error("已存在相同名称的商品类型");
         }
         return Result.success(skuService.save(skuClass));
    }

    /**
     * 查询商品类型
     * @param skufy
     * @return
     */
    @GetMapping("/search")
    @ApiOperation("商品类型搜索")
    public SkuSearchDto<SkuClass> search(SkufyDto skufy) {
        SkuSearchDto<SkuClass> result = skuService.search(skufy);
        return result;
    }

    /**
     * 删除商品类型
     * @return
     */
    @DeleteMapping("/{classId}")
    @ApiOperation("删除商品类型")
    public Result delectClassId( @PathVariable Long classId){
        log.info( "删除商品类型 {}",classId);
        try {
            boolean result = skuService.delect(classId);
            if (result) {
                log.info("删除商品类型成功，classId: {}", classId);
                return Result.success(true);
            } else {
                log.info("删除商品类型失败，未找到对应记录，classId: {}", classId);
                return Result.error("删除失败，未找到对应记录或记录已被删除");
            }
        } catch (Exception e) {
            log.error("删除商品类型异常，classId: {}", classId, e);
            return Result.error("删除失败：" + e.getMessage());
        }


    }


    @PutMapping("/{classId}")
    @ApiOperation("修改商品类型")
    public Result putClassld(@PathVariable Long classId, @RequestBody SkuClass skuClass){
        // 将路径中的classId设置到skuClass对象中，确保更新的是正确的记录
        skuClass.setClassId(classId.intValue());// 将Long类型转换为int类型
        // 调用服务层方法更新商品类型
        boolean result = skuService.putClassld(skuClass);
        if (result) {
            return Result.success(true);
        } else {
            return Result.error("更新失败");
        }
    }







}
